#include "S_2_AirConditioner_doGet.h"
#include "mi_iid_define.h"
#include "property_decoder.h"
#include "main.h"
#include "section_define.h"


extern uint8_t  g_uNo1RegList[PBS_NO1REGSIZE];

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_2_1_On_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	InDoorBusReg PbsReg = {0};	
	PbsReg.V8 = GetPbsRegValue(0x0);	
	if(PbsReg.BIT.bit6)
		property_value_new_boolean(&o->value,true);
	else
		property_value_new_boolean(&o->value,false);
	
//	if(AirGetSwitchState() == SWITCH_ON)
//	{
//		property_value_new_boolean(&o->value,true);
//	}
//	else
//	{
//		property_value_new_boolean(&o->value,false);
//	}
#else	
    o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true;       // TODO: 这里需要读到属性真正的值
#endif	
}

/**
 * 格式: property_value_new_integer(整数)　
 * 取值: 2(Cool), 3(Dry), 4(Fan), 5(Heat), 6(Off)
 */
static void P_2_2_Mode_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	InDoorBusReg PbsReg = {0};	
	PbsReg.V8 = GetPbsRegValue(0x08);																		//模式		
	property_value_new_integer(&o->value,PbsReg.BIT1.bit0_6);
//	if(GetAirMode() == COLDMODE)
//	{
//		property_value_new_integer(&o->value,2);
//	}
//	else if(GetAirMode() == DEHUMIDIFYMODE)
//	{
//		property_value_new_integer(&o->value,3);
//	}
//	else if(GetAirMode() == FANMODE)
//	{
//		property_value_new_integer(&o->value,4);
//	}
// 	else if(GetAirMode() == HOTMODE)
//	{
//		property_value_new_integer(&o->value,5);
//	}
//	else if(GetAirMode() == EMPTYMODE)
//	{
//		property_value_new_integer(&o->value,6);
//	}
#else	
    o->value.format = PROPERTY_FORMAT_NUMBER;
	o->value.data.number.type = DATA_NUMBER_INTEGER;
	o->value.data.number.value.integerValue = 2;   // TODO: 这里需要读到属性真正的值
#endif	
	
}

/**
 * 格式: property_value_new_string(字符串)　
 * 取值: 字符串，没有限制取值范围
 */
static void P_2_3_Fault_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	property_value_new_string(&o->value,"hello");
#else	
    o->value.format = PROPERTY_FORMAT_STRING;
	strncpy(o->value.data.string.value, "hello", strlen("hello")); // TODO: 这里需要读到属性真正的值
	o->value.data.string.length = strlen("hello");
#endif	
	
}

/**
 * 格式: property_value_new_float(浮点数)　
 * 取值: 最小值: 16.0, 最大值: 31.0, 步长: 0.5
 */
static void P_2_4_TargetTemperature_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	uint16_t Temp1 = 0;
	float Temp2 = 0.0;
	
	Temp1 = ((g_uNo1RegList[0x0A] <<8) | g_uNo1RegList[0x09]);					//设定温度	
	Temp2 = (Temp1&0x7FFF)/10.0;
	property_value_new_float(&o->value,Temp2);						
	
//	if(GetAirMode() == COLDMODE)
//	{
//		property_value_new_float(&o->value,g_tColdModeInfo.Temperature);
//	}
//	else if(GetAirMode() == DEHUMIDIFYMODE)
//	{
//		property_value_new_float(&o->value,g_tDehumidityModeInfo.Temperature);
//	}
//	else if(GetAirMode() == FANMODE)
//	{
//		property_value_new_float(&o->value,26.0);
//	}
//	else if(GetAirMode() == HOTMODE)
//	{
//		property_value_new_float(&o->value,g_tHotModeInfo.Temperature);
//	}	
//	else if(GetAirMode() == EMPTYMODE)
//	{
//		property_value_new_float(&o->value,26.0);
//	}
#else	
    o->value.format = PROPERTY_FORMAT_NUMBER;
	o->value.data.number.type = DATA_NUMBER_FLOAT;
	o->value.data.number.value.floatValue = 16.0; // TODO: 这里需要读到属性真正的值
#endif	

}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_2_7_Eco_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	InDoorBusReg PbsReg = {0};		
	PbsReg.V8 = GetPbsRegValue(0x0);																		//节能
	if(PbsReg.BIT.bit4)
		property_value_new_boolean(&o->value,true);															
	else
		property_value_new_boolean(&o->value,false);
	
//	if(AirGetEcoModeSwitchState() == MODE_ON)
//	{
//		property_value_new_boolean(&o->value,true);		
//	}
//	else
//	{
//		property_value_new_boolean(&o->value,false);	
//	}
#else	
    o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true;       // TODO: 这里需要读到属性真正的值
#endif	
}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_2_9_Heater_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	InDoorBusReg PbsReg = {0};
	PbsReg.V8 = GetPbsRegValue(0x0);																		//辅热		
	if(PbsReg.BIT.bit2)
		property_value_new_boolean(&o->value,true);														
	else
		property_value_new_boolean(&o->value,false);
////	if(GetAirMode() == HOTMODE)
//	{
//		if(AirGetAuxiliaryHeatModeSwitchState() == MODE_ON)
//		{
//			property_value_new_boolean(&o->value,true);
//		}
//		else
//		{
//			property_value_new_boolean(&o->value,false);
//		}
//	}
#else	
    o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true;       // TODO: 这里需要读到属性真正的值
#endif	
}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_2_10_Dryer_doGet(property_operation_t *o)
{
	InDoorBusReg RegSection1 = {0};
#if 	PROPERTY_TYPE
	
	RegSection1.V8 = GetPbsRegValue(0x0000);
//	if(RegSection1.BIT.bit7)
	{
		if(RegSection1.BIT.bit0)
			property_value_new_boolean(&o->value,true);
		else
			property_value_new_boolean(&o->value,false);
//			if(g_RegSection1.BIT.bit0)
//			{
//				property_value_new_boolean(&o->value,true);
//			}
//			else
//			{
//				property_value_new_boolean(&o->value,false);
//			}

	}
#else	
    o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true;       // TODO: 这里需要读到属性真正的值
#endif	
	
}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_2_11_SleepMode_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	InDoorBusReg PbsReg = {0};		
	PbsReg.V8 = GetPbsRegValue(0x01);																		//睡眠	
	if(PbsReg.BIT.bit6)
		property_value_new_boolean(&o->value,true);												
	else
		property_value_new_boolean(&o->value,false);
	
//	if(AirGetSleepModeState() == MODE_ON)
//	{
//		property_value_new_boolean(&o->value,true);
//	}
//	else
//	{
//		property_value_new_boolean(&o->value,false);
//	}
#else	
    o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true;       // TODO: 这里需要读到属性真正的值
#endif	
	
}

/**
 * 格式: property_value_new_integer(整数)　
 * 取值: 最小值: 0, 最大值: 100, 步长: 1
 */
static void P_2_14_TargetHumidity_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	InDoorBusReg PbsReg = {0};		
	PbsReg.V8 = GetPbsRegValue(0x0B);																		//设定湿度	
	property_value_new_integer(&o->value,PbsReg.BIT1.bit0_6);					
		
#else	
    o->value.format = PROPERTY_FORMAT_NUMBER;
	o->value.data.number.type = DATA_NUMBER_INTEGER;
	o->value.data.number.value.integerValue = 2;   // TODO: 这里需要读到属性真正的值
#endif	
}

/**
 * 格式: property_value_new_integer(整数)　
 * 取值: 0(Off), 1(On)
 */
static void P_2_17_PurifySwitch_doGet(property_operation_t *o)
{
	InDoorBusReg RegSection1 = {0};
#if 	PROPERTY_TYPE
	RegSection1.V8 = GetPbsRegValue(0x0002);
	property_value_new_integer(&o->value,RegSection1.BIT.bit2);
#else	
    o->value.format = PROPERTY_FORMAT_NUMBER;
	o->value.data.number.type = DATA_NUMBER_INTEGER;
	o->value.data.number.value.integerValue = 0;   // TODO: 这里需要读到属性真正的值
#endif	
}

/**
 * 格式: property_value_new_integer(整数)　
 * 取值: 0(Off), 1(All Soft)
 */
static void P_2_18_ListSoftWind_doGet(property_operation_t *o)
{
	InDoorBusReg RegSection1 = {0};
#if 	PROPERTY_TYPE
	RegSection1.V8 = GetPbsRegValue(0x0001);
//	if(RegSection1.BIT.bit1)
	{
		property_value_new_integer(&o->value,RegSection1.BIT.bit0);
//		if(g_RegSection1.BIT.bit0)
//		{
//			property_value_new_integer(&o->value,1);
//		}
//		else
//		{
//			property_value_new_integer(&o->value,0);
//		}
	}
	
#else	
    o->value.format = PROPERTY_FORMAT_NUMBER;
	o->value.data.number.type = DATA_NUMBER_INTEGER;
	o->value.data.number.value.integerValue = 0;  // TODO: 这里需要读到属性真正的值
#endif	
	
}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_2_19_FavoriteOn_doGet(property_operation_t *o)
{
	InDoorBusReg RegSection1 = {0};
#if 	PROPERTY_TYPE
	RegSection1.V8 = GetPbsRegValue(0x0003);
//	if(RegSection1.BIT.bit5)
	{
		property_value_new_boolean(&o->value,RegSection1.BIT.bit4);
//		if(g_RegSection1.BIT.bit4)
//		{
//			property_value_new_boolean(&o->value,true);
//		}
//		else
//		{
//			property_value_new_boolean(&o->value,false);
//		}
	}
	
#else	
    o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true; // TODO: 这里需要读到属性真正的值
#endif		
}

/**
 * 格式: property_value_new_integer(整数)　
 * 取值: 0(Cloud Recommendation), 1(Custom)
 */
static void P_2_20_FavoriteType_doGet(property_operation_t *o)
{
	InDoorBusReg RegSection1 = {0};
#if 	PROPERTY_TYPE
	RegSection1.V8 = GetPbsRegValue(0x0018);
//	if(RegSection1.BIT1.bit7)
	{
		property_value_new_integer(&o->value,RegSection1.BIT1.bit0_6);
//		if(g_RegSection1.BIT1.bit0_6)
//		{
//			property_value_new_integer(&o->value,1);
//		}
//		else
//		{
//			property_value_new_integer(&o->value,0);
//		}
	}
#else	
    o->value.format = PROPERTY_FORMAT_NUMBER;
	o->value.data.number.type = DATA_NUMBER_INTEGER;
	o->value.data.number.value.integerValue = 0;  // TODO: 这里需要读到属性真正的值
#endif	
	
}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
static void P_2_28_PeoPleApproachSoftWind_doGet(property_operation_t *o)
{
#if 	PROPERTY_TYPE
	InDoorBusReg PbsReg = {0};	
	PbsReg.V8 = GetPbsRegValue(0x07);																		//人近柔风
	if(PbsReg.BIT.bit4)
		property_value_new_boolean(&o->value,true);
	else
		property_value_new_boolean(&o->value,false);
	
//	property_value_new_boolean(&o->value,true);

#else	
    o->value.format = PROPERTY_FORMAT_BOOLEAN;
    o->value.data.boolean.value = true; // TODO: 这里需要读到属性真正的值
#endif		
}

/**
 * 格式: property_value_new_boolean(true 或 false)　
 * 取值: true 或　false
 */
//static void P_2_34_FormaldehydeRemoval_doGet(property_operation_t *o)
//{
//#if 	PROPERTY_TYPE
//	InDoorBusReg PbsReg = {0};	
//	PbsReg.V8 = GetPbsRegValue(0x07);																		//无感除醛
//	if(PbsReg.BIT.bit0)
//		property_value_new_boolean(&o->value,true);
//	else
//		property_value_new_boolean(&o->value,false);
//	
////	property_value_new_boolean(&o->value,true);

//#else	
//    o->value.format = PROPERTY_FORMAT_BOOLEAN;
//    o->value.data.boolean.value = true; // TODO: 这里需要读到属性真正的值
//#endif		
//}
	


void S_2_AirConditioner_doGet(property_operation_t *o)
{
    switch (o->piid)
    {
        case PIID_2_1_On:
            P_2_1_On_doGet(o);
            break;

        case PIID_2_2_Mode:
            P_2_2_Mode_doGet(o);
            break;

        case PIID_2_3_Fault:
            P_2_3_Fault_doGet(o);
            break;

        case PIID_2_4_TargetTemperature:
            P_2_4_TargetTemperature_doGet(o);
            break;

        case PIID_2_7_Eco:
            P_2_7_Eco_doGet(o);
            break;

        case PIID_2_9_Heater:
            P_2_9_Heater_doGet(o);
            break;

        case PIID_2_10_Dryer:
            P_2_10_Dryer_doGet(o);
            break;

        case PIID_2_11_SleepMode:
            P_2_11_SleepMode_doGet(o);
            break;

        case PIID_2_14_TargetHumidity:
            P_2_14_TargetHumidity_doGet(o);
            break;

        case PIID_2_17_PurifySwitch:
            P_2_17_PurifySwitch_doGet(o);
            break;

        case PIID_2_18_ListSoftWind:
            P_2_18_ListSoftWind_doGet(o);
            break;

        case PIID_2_19_FavoriteOn:
            P_2_19_FavoriteOn_doGet(o);
            break;

        case PIID_2_20_FavoriteType:
            P_2_20_FavoriteType_doGet(o);
            break;

				case PIID_2_28_PeoPleApproachSoftWind:
					P_2_28_PeoPleApproachSoftWind_doGet(o);
					break;

//				case PIID_2_34_FormaldehydeRemoval:
//					P_2_34_FormaldehydeRemoval_doGet(o);
//					break;
				
        default:
            o->code = OPERATION_ERROR_VALUE;
            break;
    }
}
